フローグラフ
[flow_graph]
oneAPI スレッディング・ビルディング・ブロック (oneTBB) ライブラリーは、ループの並列処理に加えて、グラフ並列処理もサポートしています。この機能を使用すると、拡張性の高い、完全にシーケンシャルなグラフを作成できます。
グラフを実装するために使用されるコンポーネントのタイプは次の 3 つです:
graph
クラス・インスタンスノード
ポートとエッジ
Graph クラス
graph
クラス・インスタンスは、フローグラフに基づいて作成されるタスクを所有します。フローグラフの実行に関連するすべてのタスクの完了を待つ必要がある場合、graph
で待機します。また、ユーザーは graph
との外部インタラクションを登録してフローグラフの所有権下でタスクを実行できます。
ノード
抽象化インターフェイス
グラフ・ノード・タイプとして使用するには、クラスは特定の抽象化タイプを継承し、対応するインターフェイスを実装する必要があります。graph_node
は他のノードタイプの基本クラスであるため、インターフェイスは常に実装する必要があります。ノードが別のノードにメッセージを送信する場合、sender
インターフェイスを実装する必要があります。receiver
インターフェイスを実装するとノードはメッセージを受信できます。複数の入出力を持つノードは、入力ポートは receiver
で出力ポートは sender
です。
プロパティー
フローグラフのすべてのノードには個別のプロパティーがあります。
機能ノード
機能ノードは、入力メッセージ (存在すれば) に応じて計算を実行し、結果またはシグナルをサクセサーに送信します。
補助
バッファリング・ノード
バッファリング・ノードは、入力メッセージを蓄えてノードタイプに応じて事前定義された順番で後続に渡すように設定されています。
サービスノード
これらのノードは、グラフ内の異なるパスからのメッセージを結合したり、同時に処理されるメッセージ数を制限するなど、メッセージフローの高度な制御、再利用可能なカスタムノード向けに設計されています。
ポートとエッジ
フローグラフは、ノード間の接続を管理する API を提供します。複数の入力ポートや出力ポートを持つノード (join_node
など) が接続を確立するには、特殊なヘルパー関数を使用してポートを指定する必要があります。
特殊メッセージタイプ
フローグラフは、特定のメッセージタイプのセットをサポートします。